//auto gen by paipai.java.augogen ver 3.0.0
//author skyzhuang
//source idl: com.erp.company.dao.idl.GetCompanyReq.java


#ifndef ERP_COMPANY_DDO_CCOMPANYFILTERDDO_BY_AUTOGEN_V5_H
#define ERP_COMPANY_DDO_CCOMPANYFILTERDDO_BY_AUTOGEN_V5_H


#include "app_platform/intf_serializable.h"
#include <set>
#include <map>
#include <string>
#include <sstream>
#include <iostream>


namespace erp
{
namespace company
{
namespace ddo
{


class CCompanyFilterDdo : public ISerializable
{
	public:
		std::string m_sLastErrMsg;///<错误信息

		/**
		 *  版本号   
		 *
		 * 版本 >= 0
		 */
		uint32_t dwVersion;

		/**
		 * cVersion_u uflag field
		 */
		uint8_t cVersion_u; //optional flag

		/**
		 *  页码，从0开始 
		 *
		 * 版本 >= 0
		 */
		uint32_t dwPage;

		/**
		 * cPage_u uflag field
		 */
		uint8_t cPage_u; //optional flag

		/**
		 *  页面大小 
		 *
		 * 版本 >= 0
		 */
		uint32_t dwPageSize;

		/**
		 * cPageSize_u uflag field
		 */
		uint8_t cPageSize_u; //optional flag

		/**
		 *  排序方式 
		 *
		 * 版本 >= 0
		 */
		uint32_t dwOrderType;

		/**
		 * cOrderType_u uflag field
		 */
		uint8_t cOrderType_u; //optional flag

		/**
		 * 公司名称
		 *
		 * 版本 >= 0
		 */
		std::string strCompanyName;

		/**
		 * cCompanyName_u uflag field
		 */
		uint8_t cCompanyName_u; //optional flag

		/**
		 * 公司法人
		 *
		 * 版本 >= 0
		 */
		std::string strCompanyCorporation;

		/**
		 * cCompanyCorporation_u uflag field
		 */
		uint8_t cCompanyCorporation_u; //optional flag

		/**
		 * 公司ID
		 *
		 * 版本 >= 0
		 */
		std::string strCompanyID;

		/**
		 * cCompanyID_u uflag field
		 */
		uint8_t cCompanyID_u; //optional flag

		/**
		 * 映射表ID
		 *
		 * 版本 >= 0
		 */
		std::string strTableID;

		/**
		 * cTableID_u uflag field
		 */
		uint8_t cTableID_u; //optional flag

		/**
		 * 公司状态
		 *
		 * 版本 >= 0
		 */
		std::set<uint32_t>  setCompanyStatus;

		/**
		 * cCompanyStatus_u uflag field
		 */
		uint8_t cCompanyStatus_u; //optional flag

		/**
		 * 扩展
		 *
		 * 版本 >= 0
		 */
		std::map<std::string,std::string>  mapExtern;

		/**
		 * cExtern_u uflag field
		 */
		uint8_t cExtern_u; //optional flag




	public:
		CCompanyFilterDdo():
		dwVersion(0),
		cVersion_u(0),
		dwPage(0),
		cPage_u(0),
		dwPageSize(0),
		cPageSize_u(0),
		dwOrderType(0),
		cOrderType_u(0),
		cCompanyName_u(0),
		cCompanyCorporation_u(0),
		cCompanyID_u(0),
		cTableID_u(0),
		cCompanyStatus_u(0),
		cExtern_u(0) {}
				CCompanyFilterDdo& operator = (const CCompanyFilterDdo& obj){

			this->dwVersion = obj.dwVersion;
			this->dwPage = obj.dwPage;
			this->dwPageSize = obj.dwPageSize;
			this->dwOrderType = obj.dwOrderType;
			this->strCompanyName = obj.strCompanyName;
			this->strCompanyCorporation = obj.strCompanyCorporation;
			this->strCompanyID = obj.strCompanyID;
			this->strTableID = obj.strTableID;
			this->setCompanyStatus = obj.setCompanyStatus;
			this->mapExtern = obj.mapExtern;
			this->cVersion_u = obj.cVersion_u;
			this->cPage_u = obj.cPage_u;
			this->cPageSize_u = obj.cPageSize_u;
			this->cOrderType_u = obj.cOrderType_u;
			this->cCompanyName_u = obj.cCompanyName_u;
			this->cCompanyCorporation_u = obj.cCompanyCorporation_u;
			this->cCompanyID_u = obj.cCompanyID_u;
			this->cTableID_u = obj.cTableID_u;
			this->cCompanyStatus_u = obj.cCompanyStatus_u;
			this->cExtern_u = obj.cExtern_u;
			return *this;
		}

	public:


		/**
		 * 是否设置 版本号   了
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 bool  IsVersionSet() const{
				 return  cVersion_u != 0;
		}


		/**
		 * 获取uflag 版本号   了
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 const uint8_t   GetVersionUFlag() const{
				 return  cVersion_u;
		}


		/**
		 * 设置 版本号   
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 void  SetVersion( const uint32_t& sVal, uint8_t cUFlag=1){
				dwVersion = sVal;
				cVersion_u = cUFlag;
		}


		/**
		 * 获取 版本号   
		 * 
		 * @return dwVersion value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetVersion() const {
				return dwVersion;
		}


		/**
		 * 是否设置 页码，从0开始 了
		 * 
		 * @param uint32_t:dwPage
		 *  
		 * 
		 */
		 bool  IsPageSet() const{
				 return  cPage_u != 0;
		}


		/**
		 * 获取uflag 页码，从0开始 了
		 * 
		 * @param uint32_t:dwPage
		 *  
		 * 
		 */
		 const uint8_t   GetPageUFlag() const{
				 return  cPage_u;
		}


		/**
		 * 设置 页码，从0开始 
		 * 
		 * @param uint32_t:dwPage
		 *  
		 * 
		 */
		 void  SetPage( const uint32_t& sVal, uint8_t cUFlag=1){
				dwPage = sVal;
				cPage_u = cUFlag;
		}


		/**
		 * 获取 页码，从0开始 
		 * 
		 * @return dwPage value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetPage() const {
				return dwPage;
		}


		/**
		 * 是否设置 页面大小 了
		 * 
		 * @param uint32_t:dwPageSize
		 *  
		 * 
		 */
		 bool  IsPageSizeSet() const{
				 return  cPageSize_u != 0;
		}


		/**
		 * 获取uflag 页面大小 了
		 * 
		 * @param uint32_t:dwPageSize
		 *  
		 * 
		 */
		 const uint8_t   GetPageSizeUFlag() const{
				 return  cPageSize_u;
		}


		/**
		 * 设置 页面大小 
		 * 
		 * @param uint32_t:dwPageSize
		 *  
		 * 
		 */
		 void  SetPageSize( const uint32_t& sVal, uint8_t cUFlag=1){
				dwPageSize = sVal;
				cPageSize_u = cUFlag;
		}


		/**
		 * 获取 页面大小 
		 * 
		 * @return dwPageSize value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetPageSize() const {
				return dwPageSize;
		}


		/**
		 * 是否设置 排序方式 了
		 * 
		 * @param uint32_t:dwOrderType
		 *  
		 * 
		 */
		 bool  IsOrderTypeSet() const{
				 return  cOrderType_u != 0;
		}


		/**
		 * 获取uflag 排序方式 了
		 * 
		 * @param uint32_t:dwOrderType
		 *  
		 * 
		 */
		 const uint8_t   GetOrderTypeUFlag() const{
				 return  cOrderType_u;
		}


		/**
		 * 设置 排序方式 
		 * 
		 * @param uint32_t:dwOrderType
		 *  
		 * 
		 */
		 void  SetOrderType( const uint32_t& sVal, uint8_t cUFlag=1){
				dwOrderType = sVal;
				cOrderType_u = cUFlag;
		}


		/**
		 * 获取 排序方式 
		 * 
		 * @return dwOrderType value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetOrderType() const {
				return dwOrderType;
		}


		/**
		 * 是否设置公司名称了
		 * 
		 * @param std::string:strCompanyName
		 *  
		 * 
		 */
		 bool  IsCompanyNameSet() const{
				 return  cCompanyName_u != 0;
		}


		/**
		 * 获取uflag公司名称了
		 * 
		 * @param std::string:strCompanyName
		 *  
		 * 
		 */
		 const uint8_t   GetCompanyNameUFlag() const{
				 return  cCompanyName_u;
		}


		/**
		 * 设置公司名称
		 * 
		 * @param std::string:strCompanyName
		 *  
		 * 
		 */
		 void  SetCompanyName( const std::string& sVal, uint8_t cUFlag=1){
				strCompanyName = sVal;
				cCompanyName_u = cUFlag;
		}


		/**
		 * 获取公司名称
		 * 
		 * @return strCompanyName value 类型为:std::string
		 * 
		 */
		 const std::string&  GetCompanyName() const {
				return strCompanyName;
		}


		/**
		 * 获取公司名称
		 * 
		 * @return strCompanyName value 类型为:std::string
		 * 
		 */
		 std::string&  GetCompanyName() {
				return strCompanyName;
		}


		/**
		 * 是否设置公司法人了
		 * 
		 * @param std::string:strCompanyCorporation
		 *  
		 * 
		 */
		 bool  IsCompanyCorporationSet() const{
				 return  cCompanyCorporation_u != 0;
		}


		/**
		 * 获取uflag公司法人了
		 * 
		 * @param std::string:strCompanyCorporation
		 *  
		 * 
		 */
		 const uint8_t   GetCompanyCorporationUFlag() const{
				 return  cCompanyCorporation_u;
		}


		/**
		 * 设置公司法人
		 * 
		 * @param std::string:strCompanyCorporation
		 *  
		 * 
		 */
		 void  SetCompanyCorporation( const std::string& sVal, uint8_t cUFlag=1){
				strCompanyCorporation = sVal;
				cCompanyCorporation_u = cUFlag;
		}


		/**
		 * 获取公司法人
		 * 
		 * @return strCompanyCorporation value 类型为:std::string
		 * 
		 */
		 const std::string&  GetCompanyCorporation() const {
				return strCompanyCorporation;
		}


		/**
		 * 获取公司法人
		 * 
		 * @return strCompanyCorporation value 类型为:std::string
		 * 
		 */
		 std::string&  GetCompanyCorporation() {
				return strCompanyCorporation;
		}


		/**
		 * 是否设置公司ID了
		 * 
		 * @param std::string:strCompanyID
		 *  
		 * 
		 */
		 bool  IsCompanyIDSet() const{
				 return  cCompanyID_u != 0;
		}


		/**
		 * 获取uflag公司ID了
		 * 
		 * @param std::string:strCompanyID
		 *  
		 * 
		 */
		 const uint8_t   GetCompanyIDUFlag() const{
				 return  cCompanyID_u;
		}


		/**
		 * 设置公司ID
		 * 
		 * @param std::string:strCompanyID
		 *  
		 * 
		 */
		 void  SetCompanyID( const std::string& sVal, uint8_t cUFlag=1){
				strCompanyID = sVal;
				cCompanyID_u = cUFlag;
		}


		/**
		 * 获取公司ID
		 * 
		 * @return strCompanyID value 类型为:std::string
		 * 
		 */
		 const std::string&  GetCompanyID() const {
				return strCompanyID;
		}


		/**
		 * 获取公司ID
		 * 
		 * @return strCompanyID value 类型为:std::string
		 * 
		 */
		 std::string&  GetCompanyID() {
				return strCompanyID;
		}


		/**
		 * 是否设置映射表ID了
		 * 
		 * @param std::string:strTableID
		 *  
		 * 
		 */
		 bool  IsTableIDSet() const{
				 return  cTableID_u != 0;
		}


		/**
		 * 获取uflag映射表ID了
		 * 
		 * @param std::string:strTableID
		 *  
		 * 
		 */
		 const uint8_t   GetTableIDUFlag() const{
				 return  cTableID_u;
		}


		/**
		 * 设置映射表ID
		 * 
		 * @param std::string:strTableID
		 *  
		 * 
		 */
		 void  SetTableID( const std::string& sVal, uint8_t cUFlag=1){
				strTableID = sVal;
				cTableID_u = cUFlag;
		}


		/**
		 * 获取映射表ID
		 * 
		 * @return strTableID value 类型为:std::string
		 * 
		 */
		 const std::string&  GetTableID() const {
				return strTableID;
		}


		/**
		 * 获取映射表ID
		 * 
		 * @return strTableID value 类型为:std::string
		 * 
		 */
		 std::string&  GetTableID() {
				return strTableID;
		}


		/**
		 * 是否设置公司状态了
		 * 
		 * @param std::set<uint32_t> :setCompanyStatus
		 *  
		 * 
		 */
		 bool  IsCompanyStatusSet() const{
				 return  cCompanyStatus_u != 0;
		}


		/**
		 * 获取uflag公司状态了
		 * 
		 * @param std::set<uint32_t> :setCompanyStatus
		 *  
		 * 
		 */
		 const uint8_t   GetCompanyStatusUFlag() const{
				 return  cCompanyStatus_u;
		}


		/**
		 * 设置公司状态
		 * 
		 * @param std::set<uint32_t> :setCompanyStatus
		 *  
		 * 
		 */
		 void  SetCompanyStatus( const std::set<uint32_t> & sVal, uint8_t cUFlag=1){
				setCompanyStatus = sVal;
				cCompanyStatus_u = cUFlag;
		}


		/**
		 * 获取公司状态
		 * 
		 * @return setCompanyStatus value 类型为:std::set<uint32_t> 
		 * 
		 */
		 const std::set<uint32_t> &  GetCompanyStatus() const {
				return setCompanyStatus;
		}


		/**
		 * 获取公司状态
		 * 
		 * @return setCompanyStatus value 类型为:std::set<uint32_t> 
		 * 
		 */
		 std::set<uint32_t> &  GetCompanyStatus() {
				return setCompanyStatus;
		}


		/**
		 * 是否设置扩展了
		 * 
		 * @param std::map<std::string,std::string> :mapExtern
		 *  
		 * 
		 */
		 bool  IsExternSet() const{
				 return  cExtern_u != 0;
		}


		/**
		 * 获取uflag扩展了
		 * 
		 * @param std::map<std::string,std::string> :mapExtern
		 *  
		 * 
		 */
		 const uint8_t   GetExternUFlag() const{
				 return  cExtern_u;
		}


		/**
		 * 设置扩展
		 * 
		 * @param std::map<std::string,std::string> :mapExtern
		 *  
		 * 
		 */
		 void  SetExtern( const std::map<std::string,std::string> & sVal, uint8_t cUFlag=1){
				mapExtern = sVal;
				cExtern_u = cUFlag;
		}


		/**
		 * 获取扩展
		 * 
		 * @return mapExtern value 类型为:std::map<std::string,std::string> 
		 * 
		 */
		 const std::map<std::string,std::string> &  GetExtern() const {
				return mapExtern;
		}


		/**
		 * 获取扩展
		 * 
		 * @return mapExtern value 类型为:std::map<std::string,std::string> 
		 * 
		 */
		 std::map<std::string,std::string> &  GetExtern() {
				return mapExtern;
		}

		virtual bool Serialize(CByteStreamNetwork& bs){
		
			uint32_t dwMyLen = 0;
			if(bs.isStoring()) //for write in buffer
			{
				//can not larger than 1 M.
				CByteStreamNetwork bsDummy(NULL, 1024 * 1024, false);
				//bsDummy for precheck the xo size...
				bsDummy.isStoring(true);
				Serialize_i(bsDummy);
				dwMyLen = bsDummy.getWrittenLength();
				bs & dwMyLen;
				Serialize_i(bs);
			}
			else
			{    //for read from buffer
				bs & dwMyLen;
				uint32_t dwReadedLen = bs.getReadLength();
				Serialize_i(bs);
				dwReadedLen = bs.getReadLength() - dwReadedLen;
				// dwReadedLen for the size of xo
				if( dwReadedLen > dwMyLen ){
					return false;
				}
				//go through the unwanted mem position...
				bs.goForward( dwMyLen - dwReadedLen );
			}

			return bs.isGood();
		}

		bool Serialize_i(CByteStreamNetwork& bsTmp){

			bsTmp & dwVersion; // 序列化 版本号    类型为uint32_t
			bsTmp & cVersion_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwPage; // 序列化 页码，从0开始  类型为uint32_t
			bsTmp & cPage_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwPageSize; // 序列化 页面大小  类型为uint32_t
			bsTmp & cPageSize_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwOrderType; // 序列化 排序方式  类型为uint32_t
			bsTmp & cOrderType_u; // 序列化uflag 类型为uint8_t
			bsTmp & strCompanyName; // 序列化公司名称 类型为String
			bsTmp & cCompanyName_u; // 序列化uflag 类型为uint8_t
			bsTmp & strCompanyCorporation; // 序列化公司法人 类型为String
			bsTmp & cCompanyCorporation_u; // 序列化uflag 类型为uint8_t
			bsTmp & strCompanyID; // 序列化公司ID 类型为String
			bsTmp & cCompanyID_u; // 序列化uflag 类型为uint8_t
			bsTmp & strTableID; // 序列化映射表ID 类型为String
			bsTmp & cTableID_u; // 序列化uflag 类型为uint8_t
			bsTmp & setCompanyStatus; // 序列化公司状态 类型为Set
			bsTmp & cCompanyStatus_u; // 序列化uflag 类型为uint8_t
			bsTmp & mapExtern; // 序列化扩展 类型为Map
			bsTmp & cExtern_u; // 序列化uflag 类型为uint8_t
			return bsTmp.isGood();
		}

		const char* GetLastErrMsg() const{
			return m_sLastErrMsg.c_str();
		}

		bool VerifyCompanyFilterDdo(){

			if(!IsVersionSet()){
				m_sLastErrMsg = "Miss Param:version";
				return false;
			}

			if(!IsPageSet()){
				m_sLastErrMsg = "Miss Param:page";
				return false;
			}

			if(!IsPageSizeSet()){
				m_sLastErrMsg = "Miss Param:pageSize";
				return false;
			}

			if(!IsOrderTypeSet()){
				m_sLastErrMsg = "Miss Param:orderType";
				return false;
			}

			if(!IsCompanyNameSet()){
				m_sLastErrMsg = "Miss Param:companyName";
				return false;
			}

			if(!IsCompanyCorporationSet()){
				m_sLastErrMsg = "Miss Param:companyCorporation";
				return false;
			}

			if(!IsCompanyIDSet()){
				m_sLastErrMsg = "Miss Param:companyID";
				return false;
			}

			if(!IsTableIDSet()){
				m_sLastErrMsg = "Miss Param:tableID";
				return false;
			}

			if(!IsCompanyStatusSet()){
				m_sLastErrMsg = "Miss Param:companyStatus";
				return false;
			}

			if(!IsExternSet()){
				m_sLastErrMsg = "Miss Param:extern";
				return false;
			}
			return true;
		}

		void DumpData(std::ostream& oss) const{
		
			oss<<"[dwVersion:"<<dwVersion<<"] ";
			oss<<"[cVersion_u:"<<(int)cVersion_u<<"] ";
			oss<<"[dwPage:"<<dwPage<<"] ";
			oss<<"[cPage_u:"<<(int)cPage_u<<"] ";
			oss<<"[dwPageSize:"<<dwPageSize<<"] ";
			oss<<"[cPageSize_u:"<<(int)cPageSize_u<<"] ";
			oss<<"[dwOrderType:"<<dwOrderType<<"] ";
			oss<<"[cOrderType_u:"<<(int)cOrderType_u<<"] ";
			oss<<"[strCompanyName:"<<strCompanyName<<"] ";
			oss<<"[cCompanyName_u:"<<(int)cCompanyName_u<<"] ";
			oss<<"[strCompanyCorporation:"<<strCompanyCorporation<<"] ";
			oss<<"[cCompanyCorporation_u:"<<(int)cCompanyCorporation_u<<"] ";
			oss<<"[strCompanyID:"<<strCompanyID<<"] ";
			oss<<"[cCompanyID_u:"<<(int)cCompanyID_u<<"] ";
			oss<<"[strTableID:"<<strTableID<<"] ";
			oss<<"[cTableID_u:"<<(int)cTableID_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cCompanyStatus_u:"<<(int)cCompanyStatus_u<<"] ";

			std::map<std::string,std::string>::const_iterator itmapExtern=mapExtern.begin();
			std::map<std::string,std::string>::const_iterator itmapExternEnd=mapExtern.end();
			for(;itmapExtern!=itmapExternEnd;itmapExtern++)
				oss<<"[mapExtern:"<<itmapExtern->second<<"] ";
			oss<<"[cExtern_u:"<<(int)cExtern_u<<"] ";
		
		}

		// codydeng提供,非常好的dump方法 ^-^  。。。。。
		template<typename T>
		T & DumpPlusData(T& oss){
			oss<<"dwVersion:"<<dwVersion;
			oss<<"[cVersion_u:"<<cVersion_u<<"] ";
			oss<<"dwPage:"<<dwPage;
			oss<<"[cPage_u:"<<cPage_u<<"] ";
			oss<<"dwPageSize:"<<dwPageSize;
			oss<<"[cPageSize_u:"<<cPageSize_u<<"] ";
			oss<<"dwOrderType:"<<dwOrderType;
			oss<<"[cOrderType_u:"<<cOrderType_u<<"] ";
			oss<<"strCompanyName:"<<strCompanyName;
			oss<<"[cCompanyName_u:"<<cCompanyName_u<<"] ";
			oss<<"strCompanyCorporation:"<<strCompanyCorporation;
			oss<<"[cCompanyCorporation_u:"<<cCompanyCorporation_u<<"] ";
			oss<<"strCompanyID:"<<strCompanyID;
			oss<<"[cCompanyID_u:"<<cCompanyID_u<<"] ";
			oss<<"strTableID:"<<strTableID;
			oss<<"[cTableID_u:"<<cTableID_u<<"] ";
			oss<<"setCompanyStatus:"<<setCompanyStatus;
			oss<<"[cCompanyStatus_u:"<<cCompanyStatus_u<<"] ";
			oss<<"mapExtern:"<<mapExtern;
			oss<<"[cExtern_u:"<<cExtern_u<<"] ";
			return oss;
		}

		// wileywang提供,树形dump方法 ^-^  。。。。。
		void DumpDataTree(std::ostream& os, int ident = 0)const {
			g_pprint(os, "dwVersion", dwVersion, ident);
			g_pprint(os, "cVersion_u", cVersion_u, ident);
			g_pprint(os, "dwPage", dwPage, ident);
			g_pprint(os, "cPage_u", cPage_u, ident);
			g_pprint(os, "dwPageSize", dwPageSize, ident);
			g_pprint(os, "cPageSize_u", cPageSize_u, ident);
			g_pprint(os, "dwOrderType", dwOrderType, ident);
			g_pprint(os, "cOrderType_u", cOrderType_u, ident);
			g_pprint(os, "strCompanyName", strCompanyName, ident);
			g_pprint(os, "cCompanyName_u", cCompanyName_u, ident);
			g_pprint(os, "strCompanyCorporation", strCompanyCorporation, ident);
			g_pprint(os, "cCompanyCorporation_u", cCompanyCorporation_u, ident);
			g_pprint(os, "strCompanyID", strCompanyID, ident);
			g_pprint(os, "cCompanyID_u", cCompanyID_u, ident);
			g_pprint(os, "strTableID", strTableID, ident);
			g_pprint(os, "cTableID_u", cTableID_u, ident);
			g_pprint(os, "setCompanyStatus", setCompanyStatus, ident);
			g_pprint(os, "cCompanyStatus_u", cCompanyStatus_u, ident);
			g_pprint(os, "mapExtern", mapExtern, ident);
			g_pprint(os, "cExtern_u", cExtern_u, ident);
		}
		
		//提供ToString借口，默认为DumpData格式，请按需要进行修改
		std::string ToString() const{
			std::stringstream ss;
			DumpData(ss);
			return ss.str();
		}

/**
 ********************以下信息是每个版本的字段********************
 */

};

}
}
}

#endif /* ERP_COMPANY_DDO_CCOMPANYFILTERDDO_BY_AUTOGEN_V5_H */
